package me.aartikov.alligator.navigators;


import me.aartikov.alligator.animations.AnimationData;
import me.aartikov.alligator.exceptions.NavigationException;
import me.aartikov.alligator.Screen;
import me.aartikov.alligator.ScreenResult;
import me.aartikov.alligator.destinations.DialogFragmentDestination;
import me.aartikov.alligator.helpers.DialogFraction;

public interface DialogFragmentNavigator {

    void goForward(Screen screen,
                   DialogFragmentDestination destination,
                   AnimationData animationData) throws NavigationException;

    void replace(Screen screen,
                 DialogFragmentDestination destination,
                 AnimationData animationData) throws NavigationException;

    void reset(Screen screen,
               DialogFragmentDestination destination,
               AnimationData animationData) throws NavigationException;

    boolean canGoBack();

    void goBack(ScreenResult screenResult) throws NavigationException;


    DialogFraction getCurrentDialogFragment();
}
